<?php
namespace app\superadmin\controller;
use app\superadmin\model\Index as IndexModel;
//继承Base控制器
class Index extends Base
{
    public function index()
    {
    	if(request()->isPost()){
    		$data=[
    		  'adminname'=>input('adminname'),
    		  'adminpass'=>md5(input('adminpass')),
    		  'state'=>'0',
    		  'phone'=>input('phone'),
    		];
            //echo $data['adminpass'];die;
    		//添加数据前应该先验证
    		$validate = \think\Loader::validate('Shopadmins');

    		if($validate->check($data)){
    		$db=\think\Db::name('shopadmins')->insert($data);
    		if($db){
    			return $this->success('添加成功','index');
    		}
    		else{
    			return $this->error('添加失败','index');
    		 }
    		}else{
    			$this->error($validate->getError());
    		}
    		return;  
    	}
       // $stateres= \think\Db::name('dining')
       //       ->alias('a')
       //       ->join('__SHOPADMINS__ b', 'a.admin_id =b.id')
       //       ->field('a.state')
       //       ->select();
       // $stateres= \think\Db::name('dining')
       //       ->field('admin_id')
       //       ->where('state=3')
       //       ->select();
       //  var_dump( $stateres);die;
        // if(in_array("3",$stateres))
        // {
          
        // }

        //获取餐厅管理员列表并进行分页
        //$shopadminsres= \think\Db::name('shopadmins')->paginate(3);

        $shopadminsres= \think\Db::name('shopadmins')
             ->alias('a')
             ->join('__DINING__ b', 'a.id =b.admin_id')
             ->field('a.id,a.adminname,a.phone,a.state,b.shopname')
             ->where('a.id =b.admin_id')
             ->paginate(3);


        $this->assign('shopadminsres',$shopadminsres);
        //echo \think\Session::get('id');检测session是否写入成功
    	return $this->fetch();
    }


    public function resetpass(){
      $id=input('id');//获取id
      // $db=\think\Db::name('shopadmins')->where('id',$id)->value('adminpass');
      //echo $db;die;
      if($db=\think\Db::name('shopadmins')->where('id',$id)->update(['adminpass' =>('1234567')])){
    	 return $this->success('密码重置成功！','index');
      }else{
    	 return $this->error('密码已经初始化，重置失败！','index');
      }
       return;
    } 	
    

     public function changestate(){
      $id=input('id');//获取id
      //$state=input('state');//获取state
      //echo $state;die;
      if($db=\think\Db::name('shopadmins')->where('id',$id)->update(['state' =>input('state')])){
         //return $this->success('账号状态重置成功！','index');
         return $this->redirect('index');
      }else{
         return $this->error('账号状态重置失败！','index');
      }
       return;
    }   
    

    public function del(){
    	$id=input('id');
    	if(db('shopadmins')->delete($id)){
    		return $this->success('删除成功！','index');
        //return $this->redirect('index');
    	}else{
    		return $this->error('删除成功！','index');
    	}
    }


    public function userlist()
    {
        //获取用户列表并进行分页
        $usersres= \think\Db::name('users')->paginate(3);
        $this->assign('usersres',$usersres);
        //var_dump($usersres);die;
      return $this->fetch();
    }


     public function deluser(){
      $id=input('id');
      if(db('users')->delete($id)){
        return $this->success('删除成功！','userlist');
      }else{
        return $this->error('删除成功！','userlist');
      }
    }


   public function dininglist()
    {
        //获取餐厅列表并进行分页
       // $diningres= \think\Db::name('dining')
       //       ->alias('a')
       //       ->join('__SHOPADMINS__ b','b.id=a.admin_id','LEFT')
       //       ->select();?state列数据无法正确获取
       $diningres= \think\Db::name('dining')
             ->alias('a')
             ->join('__SHOPADMINS__ b', 'a.admin_id =b.id')
             ->field('a.shop_id,a.shopname,a.level,a.phonenum,a.address,a.state,a.shoptime,a.service,a.intro,b.adminname')
             ->where('a.admin_id =b.id')
             ->paginate(4);
             //var_dump($diningres);die;
       $this->assign('diningres',$diningres);
      return $this->fetch();
    }
    

    public function deldining(){
      $shop_id=input('shop_id');
      if(db('dining')->delete($shop_id)){
        return $this->success('删除成功！','dininglist');
      }else{
        return $this->error('删除成功！','dininglist');
      }
    }


    public function changediningstate(){
      $shop_id=input('shop_id');//获取id
      //$state=input('state');//获取state
      //echo $state;die;
      if($db=\think\Db::name('dining')->where('shop_id',$shop_id)->update(['state' =>input('state')])){
         //return $this->success('餐厅状态重置成功！','dininglist');
         return $this->redirect('dininglist');
      }else{
         return $this->error('餐厅状态状态重置失败！','dininglist');
      }
       return;
    } 

    public function foodlist()
    {
       $foodres= \think\Db::name('food')
             ->alias('a')
             ->join('__DINING__ b', 'a.shop_id =b.shop_id')
             ->field('a.food_id,a.foodname,a.type_id,a.price,a.state,a.recommand,a.isspecial,a.specialprice,a.startdate,a.enddate,a.fee,a.intro,b.shopname')
             ->where('a.shop_id =b.shop_id')
             ->paginate(4);
       $this->assign('foodres',$foodres);
      return $this->fetch();
    } 

    public function delfood(){
      $food_id=input('food_id');
      if(db('food')->delete($food_id)){
        return $this->success('删除成功！','foodlist');
      }else{
        return $this->error('删除成功！','foodlist');
      }
    }


    public function scorelist()
    {
       $scoreres= \think\Db::name('score')
             ->alias('a')
             ->join('__DINING__ b', 'a.shop_id =b.shop_id')
             ->field('a.id,a.tastescore,a.envscore,a.servscore,a.usernum,b.shopname')
             ->where('a.shop_id =b.shop_id')
             ->paginate(1);
       $this->assign('scoreres',$scoreres);
      return $this->fetch();
    } 
    


    public function messagelist()
    {
       $messageres= \think\Db::name('message')
             ->alias('a')
             ->join('__USERS__ b', 'a.uid =b.id')
             ->join('__DINING__ c', 'a.did =c.shop_id')
             ->field('a.id,a.message,a.mdate,b.username,c.shopname')
             ->paginate(1);
       $this->assign('messageres',$messageres);
      return $this->fetch();
    } 


    public function noticelist()
    {
       $noticeres= \think\Db::name('notice')
             ->alias('a')
             ->join('__DINING__ b', 'a.did =b.shop_id')
             ->field('a.id,a.notice,a.ndate,b.shopname')
             ->paginate(1);
       $this->assign('noticeres',$noticeres);
      return $this->fetch();
    } 


    public function orderlist()
    {
       $order_id= \think\Db::name('order')        //查询订单,刚开始查询订单的时候 就把num的值取出来了
                ->select();
       //var_dump($order_id);die;
      $lists=array();
      for($i=0;$i<count($order_id);$i++) 
      {    //根据订单查询food
         $order_id[$i]['flag']=0;
      }
        $i=0;
        foreach ($order_id as $key => $value) 
        {
           $list=array();
           $list['order_id']=$value['order_id'];   //获取订单号
           $list['flag']=0;
           $order_id[$i]['flag']=1;
           $id['food_id']=$value['food_id'];  
           $food= \think\Db::name('food')    //通过订单的food_id查询food详情
                ->field('foodname')
                ->where($id)
                ->select();
           $num= \think\Db::name('order')    //通过订单的food_id查询num，第一次循环的时候是将num与food_id相对应
                ->field('num')
                ->where($id)
                ->select(); 
           $sum= \think\Db::name('order')    //通过订单的food_id查询sum，第一次循环的时候是将sum与food_id相对应
                ->field('sum')
                ->where($id)
                ->select();                     
           $list['foodname'][]=$food[0]['foodname'];  //将查到的数据保存到一个数组里
           $list['num'][]=$value['num'];
           $list['sum'][]=$value['sum'];//每一个子订单的总价,根据food_id直接从order表中读取,使得sum与food_id相对应
           $a=$list["sum"];
           $list["total"]=array_sum($a);//每一个父订单的总价，由若干个子订单的总价相加得到
           $i++;
           foreach ($order_id as $k => $v) //一个数组里我要找到和值相同的     那么我就在复制一个一模一样的数组，将这个数组里边的每一个值与另一个数组每一个比较，如果相等就把他所对应的信息保存起来，就相当于第二个循环中的数组就是用来和第一个循环中的数组进行数据比较的,也就是把相同的订单号的订单信息保存在一起

           {       
               //将相同的订单号里的food信息保存在一起
               if (($value['order_id']==$v['order_id'])&&$v['flag']!=1) 
               {
                   $id['food_id']=$v['food_id'];
                   $food= \think\Db::name('food')
                        ->field('foodname')
                        ->where($id)
                        ->select();

                   // $num= \think\Db::name('order') //num的值已经出来了在order_id保存着，只不过通过第二次循环就可以拿到
                   //     ->field('num')
                   //     ->where($id)
                   //     ->select();     
                   $list['foodname'][]=$food[0]['foodname'];
                   $list["num"][]=$v["num"];
                   $list["sum"][]=$v["sum"];
                   $a=$list["sum"];
                   // $b=array_sum($a);
                   $list["total"]=array_sum($a);
               }
           }
           $lists[]=$list; 
           //var_dump($list);die;
        }
        $a=array();
        $a=$lists;
        //var_dump($a);die;
        //var_dump($lists);die;
        foreach ($lists as $key => $value) 
        {    
            //去掉重复的订单信息
            foreach ($a as $k => $v) 
            {
               if (($value['order_id']==$v['order_id'])&&($key!=$k)&&($v['flag']!=1)) 
               {
                  unset($lists[$k]);    
               } 
               $a[$key]['flag']=1;
            }
        }
        //var_dump($lists);die;
       $this->assign("lists",$lists);

    //var_dump($lists);die;
  // die; 
       //  foreach($order_id as $one){//将二维数组转换成一维数组
       //      $result[]=$one['order_id'];
       //  }
 
      
       // foreach ($order_id as $key => $value) {
       //  $lists["order_id"]=$value;
       
        // $orderres[]= \think\Db::name('order')
        //       ->alias('a')
        //       ->join('__FOOD__ b', 'a.food_id =b.food_id')
        //       ->field('b.foodname')
        //       ->where('a.order_id',$result[$i])
        //       ->select();
         // var_dump($value);    
      // }
       //获得每个订单对应的菜品
      //   $orderres=array();
      // for($i=0;$i<count($result);$i++){
      //  $orderres[]= \think\Db::name('order')
      //        ->alias('a')
      //        ->join('__FOOD__ b', 'a.food_id =b.food_id')
      //        ->field('b.foodname')
      //        ->where('a.order_id',$result[$i])
      //        ->select();
      //   //  $res[]=$orderres;
      //   // dump($orderres);
      //  }
      //  var_dump($orderres);die;
       // $this->assign('orderres',$res);



      //    foreach($res as $k=>$v){
      //    foreach($v as $kk=>$vv){
      //      $new_arr[] = $vv;
      //   }
      // }
      //  //var_dump($new_arr);die;
      //  //$this->assign('orderres',$new_arr);

      //  foreach($res as $k=>$v){
      //   $food=array();
      //    foreach($v as $key=>$value){
      //      $foodname=$value['foodname'];
      //   }
      // }

     return $this->fetch();
    } 


    public function order_detail()
    {
       $orderid=input('order_id');
       //echo $id;die;
       //查询订单的订餐信息
       $roomres= \think\Db::name('room')
             ->alias('a')
             ->join('__DINING__ b', 'a.shop_id =b.shop_id')
             ->join('__USERS__ c', 'a.uid =c.id')
             ->join('__ORDER__ d', 'a.order_id =d.order_id')
             ->field('a.id,a.ordertime,a.isorder,a.suggesttime,a.takeoutaddr,a.order_id,a.comment,a.state,b.shopname,c.username,d.num,d.sum')
             ->where('a.order_id',$orderid)
             ->find();
       $this->assign('roomres',$roomres);


      //查询订单的餐品信息
     $order_id= \think\Db::name('order') 
                ->where('order_id',$orderid)       //查询订单,刚开始查询订单的时候 就把num的值取出来了
                ->select();
       //var_dump($order_id);die;
      $lists=array();
      for($i=0;$i<count($order_id);$i++) 
      {    //根据订单查询food
         $order_id[$i]['flag']=0;
      }
        $i=0;
        foreach ($order_id as $key => $value) 
        {
           $list=array();
           $list['order_id']=$value['order_id'];   //获取订单号
           $list['flag']=0;
           $order_id[$i]['flag']=1;
           $id['food_id']=$value['food_id'];  
           $food= \think\Db::name('food')    //通过订单的food_id查询food详情
                ->field('foodname')
                ->where($id)
                ->select();
           $price= \think\Db::name('food')    //通过订单的food_id查询price
                ->field('price')
                ->where($id)
                ->select();
           $num= \think\Db::name('order') //通过订单的food_id查询num，第一次循环的时候是将 num与food_id相对应
                ->field('num')
                ->where($id)
                ->select(); 
           $sum= \think\Db::name('order')    //通过订单的food_id查询sum，第一次循环的时候是将sum与food_id相对应
                ->field('sum')
                ->where($id)
                ->select();                           
           $list['foodname'][]=$food[0]['foodname'];  //将查到的数据保存到一个数组里
           $list['price'][]=$price[0]['price'];
           $list['num'][]=$value['num'];
           $list['sum'][]=$value['sum'];//每一个子订单的总价,根据food_id直接从order表中读取,使得sum与food_id相对应
           $a=$list["sum"];
           $list["total"]=array_sum($a);//每一个父订单的总价，由若干个子订单的总价相加得到
           $i++;
           foreach ($order_id as $k => $v) //一个数组里我要找到和值相同的     那么我就在复制一个一模一样的数组，将这个数组里边的每一个值与另一个数组每一个比较，如果相等就把他所对应的信息保存起来，就相当于第二个循环中的数组就是用来和第一个循环中的数组进行数据比较的,也就是把相同的订单号的订单信息保存在一起

           {       
               //将相同的订单号里的food信息保存在一起
               if (($value['order_id']==$v['order_id'])&&$v['flag']!=1) 
               {
                   $id['food_id']=$v['food_id'];
                   $food= \think\Db::name('food')
                        ->field('foodname')
                        ->where($id)
                        ->select();
                   $price= \think\Db::name('food')    //通过订单的food_id查询price
                         ->field('price')
                         ->where($id)
                         ->select();
                   // $num= \think\Db::name('order')//num的值已经出来了在order_id保存着，只不过通过第二次循环就可以拿到
                   //     ->field('num')
                   //     ->where($id)
                   //     ->select();     
                   $list['foodname'][]=$food[0]['foodname'];
                   $list['price'][]=$price[0]['price'];
                   $list["num"][]=$v["num"];
                   $list["sum"][]=$v["sum"];
                   $a=$list["sum"];
                   // $b=array_sum($a);
                   $list["total"]=array_sum($a);
               }
           }
           $lists[]=$list; 
           //var_dump($list);die;
        }
        $a=array();
        $a=$lists;
        foreach ($lists as $key => $value) 
        {    
            //去掉重复的订单信息
            foreach ($a as $k => $v) 
            {
               if (($value['order_id']==$v['order_id'])&&($key!=$k)&&($v['flag']!=1)) 
               {
                  unset($lists[$k]);    
               } 
               $a[$key]['flag']=1;
            }
        }
       // var_dump($lists);die;
       $this->assign("lists",$lists);
       
      return $this->fetch();
    } 

    public function statistics()
    {
       
      return $this->fetch();
    } 


}
